/**
 * 独立的时间操作工具，便于后续切换到 dayjs 或其他时间库。
 */

import dayjs from 'dayjs'

// 定义日期时间格式常量
const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss' // 日期时间格式：年-月-日 时:分:秒
const DATE_FORMAT = 'YYYY-MM-DD' // 日期格式：年-月-日

/**
 * 将给定的日期格式化为日期时间字符串，默认格式为 YYYY-MM-DD HH:mm:ss。
 *
 * @param date - 要格式化的日期，可以是多种类型（如 Date 对象、字符串等），默认为当前时间。
 * @param format - 自定义格式，默认为 DATE_TIME_FORMAT。
 * @returns 格式化后的日期时间字符串。
 */
export function formatToDateTime(date?: dayjs.ConfigType, format = DATE_TIME_FORMAT): string {
  // 如果 date 为空值，返回空字符串
  if (!date) {
    return ''
  }
  return dayjs(date).format(format)
}

/**
 * 将给定的日期格式化为日期字符串，默认格式为 YYYY-MM-DD。
 *
 * @param date - 要格式化的日期，可以是多种类型（如 Date 对象、字符串等），默认为当前时间。
 * @param format - 自定义格式，默认为 DATE_FORMAT。
 * @returns 格式化后的日期字符串。
 */
export function formatToDate(date?: dayjs.ConfigType, format = DATE_FORMAT): string {
  // 如果 date 为空值，返回空字符串
  if (!date) {
    return ''
  }
  return dayjs(date).format(format)
}

/**
 * 获取当前日期字符串，默认格式为 YYYY-MM-DD。
 *
 * @param format - 自定义格式，默认为 DATE_FORMAT。
 * @returns 当前日期字符串。
 */
export function getCurrentDate(format = DATE_FORMAT): string {
  return dayjs().format(format)
}

/**
 * 获取当前日期时间字符串，默认格式为 YYYY-MM-DD HH:mm:ss。
 *
 * @param format - 自定义格式，默认为 DATE_TIME_FORMAT。
 * @returns 当前日期时间字符串。
 */
export function getCurrentDateTime(format = DATE_TIME_FORMAT): string {
  return dayjs().format(format)
}

/**
 * 导出 dayjs 实例，方便在项目中统一使用。
 */
export const dateUtil = dayjs
